{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Result of CAE + CNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from matplotlib import pyplot as plt\n",
    "import tensorboard as tb\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def calc_mean_f1_score(df):\n",
    "    \"\"\" f1 score calculator \"\"\"\n",
    "    class_names = ['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']\n",
    "    f1_mean_map = {}\n",
    "    for cls_nm in class_names:\n",
    "        f1_scores = []\n",
    "        for fold_idx in range(5):\n",
    "            f1 = df.loc[df[\"run\"]==f\"valid_fold{fold_idx+1}_f1-score_{cls_nm}\"].sort_values(by=[\"step\"], ascending=False)[\"value\"].iloc[0]\n",
    "            f1_scores.append(np.round(f1, 2))\n",
    "        f1_mean_map[cls_nm] = np.mean(f1_scores)\n",
    "    return f1_mean_map"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def calc_mean_acc_score(df):\n",
    "    acc_scores = []\n",
    "    for fold_idx in range(5):\n",
    "        acc = df.loc[df[\"run\"]==f\"valid_acc_fold{fold_idx+1}\"].sort_values(by=[\"step\"], ascending=False)[\"value\"].iloc[0]\n",
    "        acc_scores.append(acc)\n",
    "    return np.mean(acc_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Baseline vs CAE + CNN (code is fed as input)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# read results from tensorboard\n",
    "experiment_id = \"clKHr7h1Q8WArvq8VTNNqg\"\n",
    "experiment = tb.data.experimental.ExperimentFromDev(experiment_id)\n",
    "df_baseline = experiment.get_scalars()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# read results from tensorboard\n",
    "experiment_id = \"5L7OxgMXTDKAZ6Ocpd5ypw\"\n",
    "experiment = tb.data.experimental.ExperimentFromDev(experiment_id)\n",
    "df_cae_cnn_input = experiment.get_scalars()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "F1 score 比較"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>airplane</th>\n",
       "      <th>automobile</th>\n",
       "      <th>bird</th>\n",
       "      <th>cat</th>\n",
       "      <th>deer</th>\n",
       "      <th>dog</th>\n",
       "      <th>frog</th>\n",
       "      <th>horse</th>\n",
       "      <th>ship</th>\n",
       "      <th>truck</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Baseline</th>\n",
       "      <td>0.786</td>\n",
       "      <td>0.862</td>\n",
       "      <td>0.586</td>\n",
       "      <td>0.564</td>\n",
       "      <td>0.648</td>\n",
       "      <td>0.664</td>\n",
       "      <td>0.784</td>\n",
       "      <td>0.808</td>\n",
       "      <td>0.846</td>\n",
       "      <td>0.698</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Code is input</th>\n",
       "      <td>0.772</td>\n",
       "      <td>0.830</td>\n",
       "      <td>0.542</td>\n",
       "      <td>0.540</td>\n",
       "      <td>0.604</td>\n",
       "      <td>0.644</td>\n",
       "      <td>0.774</td>\n",
       "      <td>0.780</td>\n",
       "      <td>0.828</td>\n",
       "      <td>0.660</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Improvement</th>\n",
       "      <td>-0.014</td>\n",
       "      <td>-0.032</td>\n",
       "      <td>-0.044</td>\n",
       "      <td>-0.024</td>\n",
       "      <td>-0.044</td>\n",
       "      <td>-0.020</td>\n",
       "      <td>-0.010</td>\n",
       "      <td>-0.028</td>\n",
       "      <td>-0.018</td>\n",
       "      <td>-0.038</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               airplane  automobile   bird    cat   deer    dog   frog  horse  \\\n",
       "Baseline          0.786       0.862  0.586  0.564  0.648  0.664  0.784  0.808   \n",
       "Code is input     0.772       0.830  0.542  0.540  0.604  0.644  0.774  0.780   \n",
       "Improvement      -0.014      -0.032 -0.044 -0.024 -0.044 -0.020 -0.010 -0.028   \n",
       "\n",
       "                ship  truck  \n",
       "Baseline       0.846  0.698  \n",
       "Code is input  0.828  0.660  \n",
       "Improvement   -0.018 -0.038  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f1_mean_map_baseline = calc_mean_f1_score(df_baseline)\n",
    "f1_mean_map_cae_cnn_input = calc_mean_f1_score(df_cae_cnn_input)\n",
    "df_f1_comp1 = pd.DataFrame([f1_mean_map_baseline, f1_mean_map_cae_cnn_input], index=[\"Baseline\", \"Code is input\"])\n",
    "summary_f1_comp1 = pd.concat([df_f1_comp1, pd.DataFrame(df_f1_comp1.loc[\"Code is input\", :] - df_f1_comp1.loc[\"Baseline\", :]).transpose()], axis=0)\n",
    "summary_f1_comp1.index = [\"Baseline\", \"Code is input\", \"Improvement\"]\n",
    "summary_f1_comp1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Mean validation acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7187294006347656"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# valid acc\n",
    "calc_mean_acc_score(df_cae_cnn_input)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Baseline vs CAE + CNN (Code is feature map)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# read results from tensorboard\n",
    "experiment_id = \"clKHr7h1Q8WArvq8VTNNqg\"\n",
    "experiment = tb.data.experimental.ExperimentFromDev(experiment_id)\n",
    "df_baseline = experiment.get_scalars()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# read results from tensorboard\n",
    "experiment_id = \"M33H7SyVS4yBmCVpwVGQRw\"\n",
    "experiment = tb.data.experimental.ExperimentFromDev(experiment_id)\n",
    "df_cae_cnn_fmap = experiment.get_scalars()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "F1 score 比較"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>airplane</th>\n",
       "      <th>automobile</th>\n",
       "      <th>bird</th>\n",
       "      <th>cat</th>\n",
       "      <th>deer</th>\n",
       "      <th>dog</th>\n",
       "      <th>frog</th>\n",
       "      <th>horse</th>\n",
       "      <th>ship</th>\n",
       "      <th>truck</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Baseline</th>\n",
       "      <td>0.786</td>\n",
       "      <td>0.862</td>\n",
       "      <td>0.586</td>\n",
       "      <td>0.564</td>\n",
       "      <td>0.648</td>\n",
       "      <td>0.664</td>\n",
       "      <td>0.784</td>\n",
       "      <td>0.808</td>\n",
       "      <td>0.846</td>\n",
       "      <td>0.698</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Code is feat map</th>\n",
       "      <td>0.790</td>\n",
       "      <td>0.858</td>\n",
       "      <td>0.598</td>\n",
       "      <td>0.554</td>\n",
       "      <td>0.622</td>\n",
       "      <td>0.668</td>\n",
       "      <td>0.784</td>\n",
       "      <td>0.804</td>\n",
       "      <td>0.848</td>\n",
       "      <td>0.694</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Improvement</th>\n",
       "      <td>0.004</td>\n",
       "      <td>-0.004</td>\n",
       "      <td>0.012</td>\n",
       "      <td>-0.010</td>\n",
       "      <td>-0.026</td>\n",
       "      <td>0.004</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.004</td>\n",
       "      <td>0.002</td>\n",
       "      <td>-0.004</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  airplane  automobile   bird    cat   deer    dog   frog  \\\n",
       "Baseline             0.786       0.862  0.586  0.564  0.648  0.664  0.784   \n",
       "Code is feat map     0.790       0.858  0.598  0.554  0.622  0.668  0.784   \n",
       "Improvement          0.004      -0.004  0.012 -0.010 -0.026  0.004  0.000   \n",
       "\n",
       "                  horse   ship  truck  \n",
       "Baseline          0.808  0.846  0.698  \n",
       "Code is feat map  0.804  0.848  0.694  \n",
       "Improvement      -0.004  0.002 -0.004  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f1_mean_map_baseline = calc_mean_f1_score(df_baseline)\n",
    "f1_mean_map_cae_cnn_fmap = calc_mean_f1_score(df_cae_cnn_fmap)\n",
    "df_f1_comp2 = pd.DataFrame([f1_mean_map_baseline, f1_mean_map_cae_cnn_fmap], index=[\"Baseline\", \"Code is feat map\"])\n",
    "summary_f1_comp2 = pd.concat([df_f1_comp2, pd.DataFrame(df_f1_comp2.loc[\"Code is feat map\", :] - df_f1_comp2.loc[\"Baseline\", :]).transpose()], axis=0)\n",
    "summary_f1_comp2.index = [\"Baseline\", \"Code is feat map\", \"Improvement\"]\n",
    "summary_f1_comp2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Mean validation acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7404000043869019"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# valid acc\n",
    "calc_mean_acc_score(df_cae_cnn_fmap)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "for label in f1_mean_map_baseline.keys():\n",
    "    plt.scatter(x=summary_f1_comp2.loc[\"Baseline\", label], y=summary_f1_comp2.loc[\"Improvement\", label], label=label)\n",
    "plt.xlabel(\"F1 score in Aug without Oversample\")\n",
    "plt.ylabel(\"Improvement when oversampling\")\n",
    "plt.grid()\n",
    "plt.ylim([-0.04, 0.04])\n",
    "plt.legend(bbox_to_anchor=(1.05, 1))\n",
    "plt.savefig(\"./scatter_improve_cae_cnn_featmap.png\", bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Test acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# read results from tensorboard\n",
    "experiment_id = \"kY1mdQTBTkahyTKPSE6Vyg\"\n",
    "experiment = tb.data.experimental.ExperimentFromDev(experiment_id)\n",
    "df_cae_cnn_fmap_test = experiment.get_scalars()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7103999853134155"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# valid acc aug with oversampling\n",
    "df_cae_cnn_fmap_test.loc[df_cae_cnn_fmap_test[\"run\"]==f\"valid_acc_fold1\"].sort_values(by=[\"step\"], ascending=False)[\"value\"].iloc[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Test acc遷移比較"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# read results from tensorboard\n",
    "experiment_id = \"qxAAgHKrQqOGTzEEJQlGBg\"\n",
    "experiment = tb.data.experimental.ExperimentFromDev(experiment_id)\n",
    "df_baseline_test = experiment.get_scalars()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_baseline = df_baseline_test.loc[df_baseline_test[\"run\"]==f\"valid_acc_fold1\"].sort_values(by=[\"step\"], ascending=True)[\"value\"]\n",
    "y_cae_cnn_fmap_test = df_cae_cnn_fmap_test.loc[df_cae_cnn_fmap_test[\"run\"]==f\"valid_acc_fold1\"].sort_values(by=[\"step\"], ascending=True)[\"value\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(y_baseline, label=\"Baseline\")\n",
    "plt.plot(y_cae_cnn_fmap_test, label=\"CAE+CNN\")\n",
    "plt.xlabel(\"Epoch\")\n",
    "plt.ylabel(\"Test Acc\")\n",
    "plt.grid()\n",
    "plt.legend()\n",
    "plt.savefig(\"./test_acc_cae_cnn.png\", bbox_inches=\"tight\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
